package com.example.test.comutil;

import android.content.Context;

import androidx.annotation.NonNull;

import com.example.test.R;
import com.google.i18n.phonenumbers.NumberParseException;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.Phonenumber;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 手机号码处理工具类
 */
public class PhoneNumberUtils {
    public static boolean isMobile(String mobile) {

        String regex = "^((13[0-9])|(14[0-9])|(15([0-9]))|(16[0-9])|(17[0-9])|(18[0-9])|(19[0-9]))\\d{8}$";
        Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Matcher m = p.matcher(mobile);
        return m.matches();
    }

    /**
     * 判断手机号码是否正确
     * @param code  国家区号   比如中国的是 86
     * @param mobile   手机号码
     * @return    isPhoneNumberValid
     */
    public static boolean isPhoneNumberValid(Context context, @NonNull String code, String mobile) {

        //  如果是中国手机号码就用正规表达式来判断
        if (code.equals("86")){
            boolean mobile1 = isMobile(mobile);
            if (!mobile1){
                ToastUtils.showToast(context.getString(R.string.please_enter_correct_phone_phone));
                return false;
            }
            return true;
        }else {//  否则 不是中国大陆手机号码就用谷歌的框架用来做判断
            //  电话号码是否合法
            if (!phoneNumberValid(mobile, code)) {
                ToastUtils.showToast(context.getString(R.string.please_enter_a_valid_phone_phone));
                return false;
            }
        }
        return true;
    }

    /**
     *  判断电话号码是否合法
     * @param phone  电话号码
     * @param countryCode  国家区号
     * @return
     */
    public static boolean phoneNumberValid(String phone,String countryCode){
        boolean validNumber = false;
        try {
            PhoneNumberUtil instance = PhoneNumberUtil.getInstance();
            Phonenumber.PhoneNumber parse = instance.parse("+" + countryCode + phone, countryCode);
            validNumber = instance.isValidNumber(parse);
            LogUtils.e("电话号码是否合法  " + validNumber   + "  " + parse);
        } catch (NumberParseException e) {
            e.printStackTrace();
        }
        return validNumber;
    }
}
